/*实用工具类的实现
1.获取系统时间
2.判断文件是否存在
3.获取文件所造路径
4.创建目录
*/
#ifndef __MY_UTIL__
#define __MY_UTIL__

#include <iostream>
#include <ctime>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
namespace bitlog
{
    namespace util
    {
        class Date
        {
        public:
            static size_t getTime()
            {
                return (size_t)time(nullptr);
            }
        };
        class File
        {
        public:
            static bool exits(const std::string &pathname)
            {
                // linux才可以用
                // return access(pathname.c_str(), F_OK) == 0;

                // 跨平台可以用
                struct stat st;
                if (stat(pathname.c_str(), &st) < 0)
                {
                    return false;
                }
                return true;
            }
            static std::string path(const std::string &pathname)
            {
                size_t pos = pathname.find_last_of("/\\");
                if (pos == std::string::npos)
                    return ".";
                return pathname.substr(0, pos + 1);
            }
            //"abc/def/ghi/jkl"
            static void createDirectory(const std::string &pathname)
            {
                // 1.字符串切割,获取目录
                size_t pos = 0, start = 0;
                while (start < pathname.size())
                {
                    pos = pathname.find_first_of("/\\", start);
                    if (pos == std::string::npos)
                    {
                        if (!exits(pathname))
                        {
                            mkdir(pathname.c_str(), 0777);
                        }
                        break;
                    }
                    std::string parent_dir = pathname.substr(0, pos);
                    // 2.判断目录是否存在,如果不存在则创建
                    if (exits(parent_dir) == true)
                    {
                        start = pos + 1;
                        continue;
                    }
                    mkdir(parent_dir.c_str(), 0777);
                    start = pos + 1;
                }
            }
        };
    }

}
#endif